/* 
	该文件是对axios的封装，目标：
		1.配置ajax请求：基本路径、超时时间。
		2.给ajax请求添加进度条效果。
		3.返回服务器响应的真正数据。
		4.统一处理ajax请求错误。
*/

//引入axios
import axios from "axios";

//引入nprogress做进度条效果
import nprogress from "nprogress";
//引入nprogress的样式
import "nprogress/nprogress.css";

//创建axios实例对象
const homeAjax = axios.create({
  baseURL: "/bapi", //基本路径
  timeout: 10000, //超时时间
});

//请求拦截器
homeAjax.interceptors.request.use((config) => {
  nprogress.start(); //进度条走起

  return config;
});

//响应拦截器
homeAjax.interceptors.response.use(
  //响应成功的回调
  (response) => {
    nprogress.done(); //进度条停止
    //将纯数据交给程序员
    return response.data;
  },
  //响应失败的回调
  (error) => {
    nprogress.done(); //进度条停止
    //第三种处理方式：弹窗提示错误，随后返回初始化的Promise实例中断Promise链（程序员不用写失败的回调）
    alert(error);
    return new Promise(() => {});
  }
);

export default homeAjax;
